// 评价相关API服务
const request = require('../utils/request');

/**
 * 添加评价
 * @param {Object} data 评价数据，包含appointmentId, score, content
 * @returns {Promise} 包含评价ID的Promise
 */
const addReview = (data) => {
  console.log('添加评价，参数:', data);
  return request.post('/review', data)
    .then(res => {
      console.log('添加评价成功，返回:', res);
      return res;
    })
    .catch(err => {
      console.error('添加评价失败:', err);
      throw err;
    });
};

/**
 * 获取预约评价
 * @param {Number} appointmentId 预约ID
 * @returns {Promise} 包含评价信息的Promise
 */
const getReviewByAppointmentId = (appointmentId) => {
  console.log('获取预约评价，预约ID:', appointmentId);
  return request.get(`/review/appointment/${appointmentId}`)
    .then(res => {
      console.log('获取预约评价成功，返回:', res);
      return res;
    })
    .catch(err => {
      console.error('获取预约评价失败:', err);
      return null; // 返回null以便前端判断
    });
};

/**
 * 获取用户评价列表
 * @param {Number} page 页码
 * @param {Number} size, 每页大小
 * @returns {Promise} 包含分页评价列表的Promise
 */
const getUserReviews = (page = 1, size = 10) => {
  console.log('获取用户评价列表，参数:', { page, size });
  return request.get('/review/user', { page, size })
    .then(res => {
      console.log('获取用户评价列表成功，返回:', res);
      return res;
    })
    .catch(err => {
      console.error('获取用户评价列表失败:', err);
      // 返回空对象以避免前端错误
      return {
        records: [],
        total: 0,
        pages: 0,
        current: page,
        size: size
      };
    });
};

/**
 * 获取医护人员评价列表
 * @param {Number} page 页码
 * @param {Number} size 每页大小
 * @returns {Promise} 包含分页评价列表的Promise
 */
const getStaffReviews = (page = 1, size = 10) => {
  console.log('获取医护人员评价列表，参数:', { page, size });
  return request.get('/review/staff', { page, size })
    .then(res => {
      console.log('获取医护人员评价列表成功，返回:', res);
      return res;
    })
    .catch(err => {
      console.error('获取医护人员评价列表失败:', err);
      // 返回空对象以避免前端错误
      return {
        records: [],
        total: 0,
        pages: 0,
        current: page,
        size: size
      };
    });
};

module.exports = {
  addReview,
  getReviewByAppointmentId,
  getUserReviews,
  getStaffReviews
}; 